﻿using Newtonsoft.Json;
using Sgr;
using Sgr.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Intrinsics.X86;
using System.Text;
using System.Threading.Tasks;

namespace Xunit.Sgr.Tests
{
    public class TestDataConnectionStringProvider : IDataConnectionStringProvider
    {
        public IEnumerable<DataConnectionString> LoadDataConnectionStrings()
        {
            return new DataConnectionString[]
            {
                    // 生产环境

                    //"Server=localhost;Port=3306;Database=sgr-prod;User Id=sgr_user;Password=your_strong_password;CharSet=utf8mb4;AllowPublicKeyRetrieval=true;SslMode=Required;UseAffectedRows=true;ConnectionTimeout=10;DefaultCommandTimeout=30;Pooling=true;MinimumPoolSize=10;MaximumPoolSize=100;ConnectionLifeTime=300;ConnectionReset=true;",
                    //安全相关：
                    //•	SslMode=Required - 强制使用 SSL/TLS 加密连接
                    //•	AllowPublicKeyRetrieval=true - 允许客户端从服务器获取公钥
                    //性能优化：
                    //•	MinimumPoolSize=10 - 保持最少 10 个连接在池中
                    //•	MaximumPoolSize=100 - 最大允许 100 个连接
                    //•	ConnectionLifeTime=300 - 连接最大生存时间为 300 秒
                    //•	ConnectionReset=true - 重用连接前重置连接状态
                    //超时控制：
                    //•	ConnectionTimeout=10 - 连接超时设为 10 秒（生产环境要求快速失败）
                    //•	DefaultCommandTimeout=30 - 命令执行超时 30 秒
                    //基础配置：
                    //•	CharSet=utf8mb4 - 使用完整的 Unicode 字符集
                    //•	UseAffectedRows=true - 返回实际受影响的行数
                    //•	Pooling=true - 启用连接池

                new DataConnectionString(
                    Constant.DEFAULT_DATABASE_SOURCE_NAME,
                    DatabaseType.MySql,
                   "Server=localhost;Port=3306;Database=sgr-test;User Id=root;Password=1qaz@WSX;CharSet=utf8mb4;UseAffectedRows=true;ConnectionTimeout=30;DefaultCommandTimeout=30;Pooling=true;MinimumPoolSize=1;MaximumPoolSize=100;",
                    Array.Empty<string>()),
                new DataConnectionString(
                    "UPMS_DATABASE",
                    DatabaseType.MySql,
                   "Server=localhost;Port=3306;Database=sgr-test;User Id=root;Password=1qaz@WSX;CharSet=utf8mb4;UseAffectedRows=true;ConnectionTimeout=30;DefaultCommandTimeout=30;Pooling=true;MinimumPoolSize=1;MaximumPoolSize=100;",
                    Array.Empty<string>())
            };
        }
    }
}